package br.home.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

import br.home.entitys.Produto;
import br.home.jdbc.ConnectionFactory;

public class ProdutoDao {

	// SELECIONA OS VALORES PARA O AUTOCOMPLETE
	public static String getMyAutoComplete() {
		try {
			Connection con = ConnectionFactory.getConnection();
			String sql = "SELECT nome FROM produto ORDER BY nome asc";
			Statement stmt = con.createStatement();
			ResultSet result = stmt.executeQuery(sql);
			String meusResultados = null;
			while (result.next()) {
				if (meusResultados == null) {
					meusResultados = "";
				}
				if (meusResultados.length() > 1) {
					if (!meusResultados.substring(meusResultados.length() - 1)
							.equals(",")) {
						meusResultados += ",";
					}
				}
				meusResultados += result.getString("nome");
			}
			result.close();
			con.close();
			if (meusResultados != null) {
				return meusResultados;
			} else {
				return null;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	// COMPLETA O CODIGO APENAS ATRAVES DO NOME
	public static String getCodigoProduto(String nome) {
		try {
			String codigo = "";
			Connection con = ConnectionFactory.getConnection();
			String sql = "SELECT idproduto FROM produto WHERE nome = ? LIMIT 1";
			PreparedStatement stmt = con.prepareStatement(sql);
			stmt.setString(1, nome);
			ResultSet result = stmt.executeQuery();
			while (result.next()) {
				codigo = result.getString("idproduto");
			}
			result.close();
			con.close();
			return codigo;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	// COPLETA NOME ATRAVES DO CODIGO
	public static String getNomeProduto(String codigo) {
		try {
			String nomeproduto = "";
			Connection con = ConnectionFactory.getConnection();
			String sql = "SELECT nome FROM produto WHERE  idproduto = ? LIMIT 1";
			PreparedStatement stmt = con.prepareStatement(sql);
			stmt.setInt(1, Integer.parseInt(codigo));
			ResultSet result = stmt.executeQuery();
			while (result.next()) {
				nomeproduto = result.getString("nome");
			}
			result.close();
			con.close();
			return nomeproduto;
		} catch (Exception e) {
			e.printStackTrace();

			return null;
		}
	}

	public static Produto selectOne(int idProduto) {
		try {
			Connection con = ConnectionFactory.getConnection();
			String sql = "SELECT * FROM produto WHERE idproduto = ? LIMIT 1";
			PreparedStatement stmt = con.prepareStatement(sql);
			stmt.setInt(1, idProduto);
			ResultSet result = stmt.executeQuery();
			Produto produto = new Produto();
			while (result.next()) {
				produto.setId(result.getInt("idproduto"));
				produto.setNome(result.getString("nome"));
				produto.setTipo(result.getString("tipo"));
				produto.setPreco(result.getDouble("preco"));
			}
			stmt.close();
			con.close();
			return produto;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

}
